#ifndef _RESTOREVISITOR_H_
#define _RESTOREVISITOR_H_
#include "ast/VisitorBase.h"
class CramBuilder;

class RestoreVisitor: public VisitorBase
{
public:
    RestoreVisitor(CramBuilder* builder);
    virtual void traverse(const SimpleNodePtr& node);
    virtual void unhandled_node(const SimpleNodePtr& node);
    virtual void visitSuite(const QSharedPointer<Suite>& node);

    virtual void visitImport(const ImportPtr& node);
    virtual void visitImportFrom(const ImportFromPtr& node);
    virtual void visitTryExcept(const TryExceptPtr& node);
    virtual void visitClassDef(const ClassDefPtr& node);
    virtual void visitFunctionDef(const FunctionDefPtr& node);
    virtual void visitAssign(const AssignPtr& node);
private:
    QString makeCallArgs(const ExprTypeList& args);
    QString makeValue(const SimpleNodePtr& value);
private:
    CramBuilder* _builder;
    int _inTry;
    QString _exceptAttr;
};

#endif
